home *** CD-ROM | disk | FTP | other *** search
- 10 ' PROGRAM TO CONVERT AN ADDRESS MANAGER DATABASE FILE INTO AN
- 20 ' EDIT FILE.
- 30 '
- 40 ' AN ADDRESS MANAGER DATABASE FILE HAS THE FOLLOWING FORMAT:
- 50 ' SIZE | ENTRY 1 | ENTRY 2 | ... | ENTRY N | <FF>
- 60 ' WHERE SIZE IS A 4 BYTE INTEGER AND EACH ENTRY HAS THE
- 70 ' FOLLOWING FORMAT:
- 80 ' <FF> NAME <CR> ADDRESS LINE 1 <CR> ADDRESS LINE 2 <CR>
- 90 ' ADDRESS LINE 3 <CR> AREA CODE <CR> PHONE PREFIX <CR>
- 100 ' LAST 4 DIGITS <CR> COMMENT LINE 1 <CR> COMMENT LINE 2
- 110 ' WHERE <FF> IS A FORM FEED BYTE AND <CR> IS A CARRIAGE RETURN BYTE
- 120 '
- 130 ' THE ADDRESS MANAGER TREATS A DATABASE FILE AS A DIRECT ACCESS FILE
- 140 ' HAVING A RECORD LENGTH OF 512 BYTES. THIS PROGRAM ACCESS THE FILE
- 150 ' 64 BYTES AT A TIME FOR CONVENIENCE.
- 160 '------------------------------------------------------------------------
- 170 INPUT "Enter input database file: ",FILE1$
- 180 OPEN FILE1$ AS #1 LEN=64
- 190 FIELD #1,64 AS B$
- 200 INPUT "Enter output ASCII file: ",FILE2$
- 210 OPEN FILE2$ FOR OUTPUT AS #2
- 215 INPUT "Ouput Comments on 2 lines: ",C$
- 216 CMNT$ = MID$( C$, 1, 1 ) : IF CMNT$ = "y" THEN CMNT$ = "Y"
- 220 IREC%=1
- 230 GET #1,IREC%
- 240 A$ = B$
- 250 IREC% = IREC% + 1
- 260 GET #1,IREC%
- 270 C$ = A$ + B$
- 280 '---------------------------DISPLAY THE FILE SIZE
- 290 SIZE = CVI( MID$( C$, 1, 2 ) )
- 300 IF SIZE < 0 THEN SIZE = SIZE + 65536
- 310 PRINT "DATABASE SIZE ";SIZE;" BYTES"
- 320 ' DEFINE THE FORM FEED CHARACTER, FF
- 330 FF$ = CHR$( 12 )
- 340 J% = INSTR(C$,FF$)
- 350 ' THE FF CHARACTER MUST BE THE 5TH CHARACTER IN FILE
- 360 IF J% <> 5 THEN PRINT "ILLEGAL FILE TYPE" : END
- 370 J% = J% + 1
- 380 ' DEFINE THE CARRIAGE RETURN CHARACTER, CR
- 390 CR$ = CHR$( 13 )
- 400 '---------------------------ENTRY OUTPUT LOOP
- 410 '---------------------------NAME
- 420 GOSUB 1000
- 430 K% = INSTR( J%, C$, CR$ )
- 440 IF J% >= SIZE THEN END
- 450 L$ = MID$( C$, J%, K%-J% )
- 460 PRINT L$
- 470 PRINT #2,L$
- 480 J% = K% + 1
- 490 '---------------------------ADDRESS LINE 1
- 500 GOSUB 1000
- 510 K% = INSTR( J%, C$, CR$ )
- 520 L$ = MID$( C$, J%, K%-J% )
- 530 PRINT L$
- 540 PRINT #2,L$
- 550 J% = K% + 1
- 560 '---------------------------ADDRESS LINE 2
- 570 GOSUB 1000
- 580 K% = INSTR( J%, C$, CR$ )
- 590 L$ = MID$( C$, J%, K%-J% )
- 600 PRINT L$
- 610 PRINT #2,L$
- 620 J% = K% + 1
- 630 '---------------------------ADDRESS LINE 3
- 640 GOSUB 1000
- 650 K% = INSTR( J%, C$, CR$ )
- 660 L$ = MID$( C$, J%, K%-J% )
- 670 PRINT L$
- 680 PRINT #2,L$
- 690 J% = K% + 1
- 700 '---------------------------PHONE LINE
- 710 GOSUB 1000
- 720 K% = INSTR(J%,C$,CR$)
- 730 L1$ = MID$(C$,J%,K%-J%)
- 740 J%=K%+1
- 750 K% = INSTR(J%,C$,CR$)
- 760 L2$ = MID$(C$,J%,K%-J%)
- 770 J%=K%+1
- 780 K% = INSTR(J%,C$,CR$)
- 790 L3$ = MID$(C$,J%,K%-J%)
- 800 PRINT "(";L1$;")";L2$;"-";L3$
- 810 PRINT #2,"(";L1$;")";L2$;"-";L3$
- 820 J% = K% + 1
- 830 '---------------------------COMMENT LINE 1
- 840 GOSUB 1000
- 850 K% = INSTR(J%,C$,CR$)
- 860 L$ = MID$(C$,J%,K%-J%)
- 870 IF CMNT$ = "Y" THEN PRINT L$ : PRINT #2,L$
- 890 J% = K% + 1
- 900 '---------------------------COMMENT LINE 2
- 910 GOSUB 1000
- 920 K% = INSTR(J%,C$,FF$)
- 930 L$ = MID$(C$,J%,K%-J%)
- 940 IF CMNT$ = "Y" THEN PRINT L$ : PRINT #2,L$
- 950 PRINT : PRINT #2,""
- 960 J% = K% + 1
- 970 GOTO 420
- 980 '---------------------------END OF LOOP
- 990 '
- 1000 '---------------------INPUT BUFFER UPDATE ROUTINE
- 1010 IF J% <= 64 THEN RETURN
- 1020 J% = J% - 64 : SIZE = SIZE - 64
- 1030 A$ = B$
- 1040 IREC% = IREC% + 1
- 1050 ON ERROR GOTO 1100
- 1060 GET #1,IREC%
- 1070 ON ERROR GOTO 0
- 1080 C$ = A$ + B$
- 1090 RETURN
- 1100 '---------------------ERROR TRAPPING
- 1110 B$ = ""
- 1120 RESUME
-